/***********************************************************************
 * Module:  Magacin.java
 * Author:  Igor Spremo, Milan Stojkov
 * Purpose: Defines the Class Magacin
 ***********************************************************************/

package model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * 
 * @author Igor Spremo, Milan Stojkov
 *
 */

@SuppressWarnings("serial")
public class Magacin implements Serializable {
	
	protected Integer id;
	protected String nazivJedinice;
	protected int verzija;

	protected Collection<Otpremnica> otpremnice;
	protected Collection<MagacinskaKartica> magacinskeKartice;
	protected Collection<Dobavlja> dobavljanja;

	public Collection<Otpremnica> getOtpremnice() {
		if (otpremnice == null)
			otpremnice = new HashSet<Otpremnica>();
		
		return otpremnice;
	}

	public Iterator<Otpremnica> getIteratorOtpremnice() {
		if (otpremnice == null)
			otpremnice = new HashSet<Otpremnica>();
		
		return otpremnice.iterator();
	}

	public void setOtpremnice(Collection<Otpremnica> newOtpremnice) {
		removeAllOtpremnice();
		for (Iterator<Otpremnica> iter = newOtpremnice.iterator(); iter.hasNext();)
			addOtpremnica((Otpremnica) iter.next());
	}

	public void addOtpremnica(Otpremnica newOtpremnica) {
		if (newOtpremnica == null)
			return;
		if (this.otpremnice == null)
			this.otpremnice = new HashSet<Otpremnica>();
		if (!this.otpremnice.contains(newOtpremnica))
			this.otpremnice.add(newOtpremnica);
	}

	public void removeOtpremnica(Otpremnica oldOtpremnica) {
		if (oldOtpremnica == null)
			return;
		if (this.otpremnice != null)
			if (this.otpremnice.contains(oldOtpremnica))
				this.otpremnice.remove(oldOtpremnica);
	}

	public void removeAllOtpremnice() {
		if (otpremnice != null)
			otpremnice.clear();
	}

	public Collection<MagacinskaKartica> getMagacinskeKartice() {
		if (magacinskeKartice == null)
			magacinskeKartice = new HashSet<MagacinskaKartica>();
		
		return magacinskeKartice;
	}

	public Iterator<MagacinskaKartica> getIteratorMagacinskeKartice() {
		if (magacinskeKartice == null)
			magacinskeKartice = new HashSet<MagacinskaKartica>();
		return magacinskeKartice.iterator();
	}

	public void setMagacinskeKartice(
			Collection<MagacinskaKartica> newMagacinskeKartice) {
		removeAllMagacinskeKartice();
		for (Iterator<MagacinskaKartica> iter = newMagacinskeKartice.iterator(); iter.hasNext();)
			addMagacinskaKartica((MagacinskaKartica) iter.next());
	}

	public void addMagacinskaKartica(MagacinskaKartica newMagacinskaKartica) {
		if (newMagacinskaKartica == null)
			return;
		if (this.magacinskeKartice == null)
			this.magacinskeKartice = new HashSet<MagacinskaKartica>();
		if (!this.magacinskeKartice.contains(newMagacinskaKartica))
			this.magacinskeKartice.add(newMagacinskaKartica);
	}

	public void removeMagacinskaKartica(
			MagacinskaKartica oldMagacinskaKartica) {
		if (oldMagacinskaKartica == null)
			return;
		if (this.magacinskeKartice != null)
			if (this.magacinskeKartice.contains(oldMagacinskaKartica))
				this.magacinskeKartice.remove(oldMagacinskaKartica);
	}

	public void removeAllMagacinskeKartice() {
		if (magacinskeKartice != null)
			magacinskeKartice.clear();
	}

	public Collection<Dobavlja> getDobavljanja() {
		if (dobavljanja == null)
			dobavljanja = new HashSet<Dobavlja>();
		
		return dobavljanja;
	}

	public Iterator<Dobavlja> getIteratorDobavljanja() {
		if (dobavljanja == null)
			dobavljanja = new HashSet<Dobavlja>();
		
		return dobavljanja.iterator();
	}

	public void setDobavljanja(Collection<Dobavlja> newDobavljanja) {
		removeAllDobavljanja();
		for (Iterator<Dobavlja> iter = newDobavljanja.iterator(); iter.hasNext();)
			addDobavlja((Dobavlja) iter.next());
	}

	public void addDobavlja(Dobavlja newDobavlja) {
		if (newDobavlja == null)
			return;
		if (this.dobavljanja == null)
			this.dobavljanja = new HashSet<Dobavlja>();
		if (!this.dobavljanja.contains(newDobavlja))
			this.dobavljanja.add(newDobavlja);
	}

	public void removeDobavlja(Dobavlja oldDobavlja) {
		if (oldDobavlja == null)
			return;
		if (this.dobavljanja != null)
			if (this.dobavljanja.contains(oldDobavlja))
				this.dobavljanja.remove(oldDobavlja);
	}

	public void removeAllDobavljanja() {
		if (dobavljanja != null)
			dobavljanja.clear();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNazivJedinice() {
		return nazivJedinice;
	}

	public void setNazivJedinice(String nazivJedinice) {
		this.nazivJedinice = nazivJedinice;
	}

	public int getVerzija() {
		return verzija;
	}

	public void setVerzija(int verzija) {
		this.verzija = verzija;
	}

}